package cn.smile.excel.writer.jxl;

import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.IOException;

/**
 * 关于Excel文件的信息
 *
 * @Author: 毛苏宇
 * User: me
 * Date: 2019/12/3
 * Time: 16:15
 * Description:
 *  所有关于Excel的信息都将在此类下，获取Excel相关对象时，直接get即可
 */
public class ExcelInfo {

    /**
     * excel默认的存储目录---桌面
     */
    private String excelPath = FileSystemView.getFileSystemView().getHomeDirectory().getPath();
    /**
     * 默认工作表的表名为sheet1
     */
    private String excelSheetName = "sheet1";
    /**
     * 默认第一个工作表，也就是0
     */
    private int excelSheetNumber = 0;
    /**
     * 工作薄
     */
    private WritableWorkbook workbook = null;
    /**
     * 工作表
     */
    private WritableSheet sheet = null;


    /**
     * 默认初始化
     */
    public ExcelInfo() {
        init(excelPath=(excelPath + File.separator + System.currentTimeMillis() + ".xls"), excelSheetName, excelSheetNumber);
    }

    /**
     * 将默认的配置刷新为用户传入的配置
     * @param excelPath excel文件的路径
     * @param sheetName 工作表的表名
     * @param sheetNum  第几个工作表
     */
    private void refresh(String excelPath, String sheetName, int sheetNum){
        this.excelPath = excelPath;
        this.excelSheetName = sheetName;
        this.excelSheetNumber = sheetNum;
    }

    /**
     * 自定义初始化
     *
     * @param excelPath excel文件的路径
     * @param sheetName 工作表的表名
     * @param sheetNum  第几个工作表
     */
    public ExcelInfo(String excelPath, String sheetName, int sheetNum) {
        //调用初始化程序
        init(excelPath, sheetName,sheetNum);
    }

    /**
     * 真正的初始化函数
     *
     * @param excelPath excel文件的路径
     * @param sheetName 工作表的表名
     * @param sheetNum  第几个工作表
     */
    private void init(String excelPath, String sheetName, int sheetNum) {
        //刷新配置
        refresh(excelPath,sheetName,sheetNum);
        //创建Excel工作薄，所有操作围绕着该对象
        try {
            workbook = Workbook.createWorkbook(new File(this.excelPath));
        } catch (IOException e) {
            e.printStackTrace();
        }
        //第一个sheet
        sheet = workbook.createSheet(this.excelSheetName, this.excelSheetNumber);
    }

    /**
     * 得到当前工作薄
     *
     * @return
     */
    public WritableWorkbook getWorkBook() {
        return this.workbook;
    }

    /**
     * 得到当前工作表
     *
     * @return
     */
    public WritableSheet getSheet() {
        return this.sheet;
    }

    /**
     * 得到excel文件路径
     *
     * @return
     */
    public String getExcelPath() {
        return this.excelPath;
    }

    /**
     * 得到当前工作表的表名
     *
     * @return
     */
    public String getExcelSheetName() {
        return this.excelSheetName;
    }

    /**
     * 得到当前工作表的表名
     *
     * @return
     */
    public int getExcelSheetNumber() {
        return this.excelSheetNumber;
    }
}
